home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Apple Macintosh Developer Technical Support
- **
- ** Header information for Simple App framework.
- **
- ** by Matt Xavier Mora, Apple Developer Technical Support
- **
- ** File: SimpleApp.h
- **
- ** Copyright ©1996 Apple Computer, Inc.
- ** All rights reserved.
- **
- ** You may incorporate this sample code into your applications without
- ** restriction, though the sample code has been provided "AS IS" and the
- ** responsibility for its operation is 100% yours. However, what you are
- ** not permitted to do is to redistribute the source as "Apple Sample
- ** Code" after having made changes. If you're going to re-distribute the
- ** source, we require that you make it clear in the source that the code
- ** was descended from Apple Sample Code, but that you've made changes.
- */
-
- #include <Lists.h>
- #include <AppleEvents.h>
- #include <TextEdit.h>
-
- #ifndef __SIMPLEAPP__
- #define __SIMPLEAPP__
-
- /*---------------------------------------------------------------------------------- */
- #pragma mark Defines
- /*---------------------------------------------------------------------------------- */
- #define kMagicSig (0x4D584D21) /* 'MXM!' our magic signature */
- #define kMaxMenus (20)
- #define kMaxMenuItems (128)
- #define kMaxButtons (128)
- #define kMaxEventProcs (10)
- #define kAppleEventLoadingErr (129)
- #define kScrollBarType 'scrl'
- #define kEventPassThru (true) /* This lets the event pass thru to the default handler */
- #define kEventOverRide (false) /* This overides the event and doesn't call to the default handler */
-
- #define kUpArrow (30)
- #define kDownArrow (31)
- #define kEnterKey (0x03)
- #define kReturnKey (0x0D)
- #define kTabKey (0x09)
-
- #define kAppleNum (128)
- #define kFileNum (129)
- #define kEditNum (130)
- #define kMenuStartID (127)
- #define kMargin (5)
- #define kUseStandardMenu (true)
-
- #define oneBuffer (1)
- #define tenBuffers (10)
- #define qtStyle 0
- #define cdStyle 1
-
- /*---------------------------------------------------------------------------------- */
- #pragma mark typedefs
- /*---------------------------------------------------------------------------------- */
- typedef Str255 StringArray;
-
- typedef StringArray *StringArrayPtr,**StringArrayHandle ;
-
- typedef ControlRef ControlArray[];
- typedef ControlArray *ControlArrayPtr,**ControlArrayHandle;
-
- typedef struct GroupRec *GroupRecPtr,**GroupRecHandle;
- typedef struct ObjectItemRec *ObjectItemRecPtr,**ObjectItemRecHandle;
- typedef struct MenuItemRec MenuItemRec, *MenuItemRecPtr ,**MenuItemRecHandle ;
- typedef struct ButtonItemRec ButtonItemRec,*ButtonItemRecPtr,** ButtonItemRecHandle;
-
-
-
-
- typedef pascal short (* MenuHitProc) ( long modifiers);
- typedef pascal short (* MenuUpdateProc )( long modifiers);
- typedef pascal short (* ButtonHitProc)( long modifiers) ;
- typedef pascal short (* ButtonUpdateProc )( long modifiers);
- typedef pascal void (* MyActionProc)(ControlHandle control,short part);
- typedef pascal Boolean (* AboutProc) (long data);
-
- typedef pascal Boolean (* PreGroupHitProc) (long modifiers ,Point pt, ControlArrayPtr cap , short count) ;
- typedef pascal short (* PostGroupHitProc ) ( long modifiers ,ControlRef cr,ButtonItemRecHandle brh, short item);
- typedef pascal short (* GroupUpdateProc ) ( WindowRef wind,GroupRecHandle grh );
-
-
- typedef pascal short (* WindowHitProc)( long modifiers);
- typedef pascal short (* ListHitProc )( long modifiers) ;
- typedef pascal short (* EditFieldHitProc )( long modifiers) ;
- typedef pascal short (* WindowUpdateProc )( long modifiers) ;
- typedef pascal short (* ListUpdateProc )( long modifiers) ;
- typedef pascal void (* ListDrawCellProc )( Point thecell, Rect *bounds ,ListRef listID );
- typedef pascal short (* EditFieldUpdateProc )( long modifiers) ;
-
- typedef pascal short (* WindowIdleProc)( long modifiers) ;
- typedef pascal short (* ListIdleProc )( long modifiers) ;
- typedef pascal short (* EditFieldIdleProc )( long modifiers) ;
- typedef pascal short (* WindowGrowProc )(EventRecord *event );
- typedef pascal short (* WindowZoomProc)(EventRecord *event);
- typedef pascal short (* WindowActivateProc )(Boolean isActivating ) ;
-
- typedef pascal short (* TextFieldHitProc )( long modifiers) ;
- typedef pascal short (* TextFieldUpdateProc )( long modifiers) ;
- typedef pascal short (* EventProcs )(EventRecord *event) ;
- typedef pascal short (* TerminateProc )( long flags) ;
- typedef pascal short (* InitializeProc )( long flags) ;
- typedef pascal short (* LowMemProc )( long flags ) ;
- typedef pascal short (* MenuEventProc) (long menuResult);
- typedef pascal void (* WindowCloseProc)(WindowRef * theWindow);
-
- /* generic object stuff */
- typedef pascal Handle (* ObjectInitProc) (ObjectItemRecHandle orh);
- typedef pascal OSErr (* ObjectDisposeProc) (ObjectItemRecHandle orh);
- typedef pascal short (* ObjectHitProc ) (Point *pt,long modifiers, ObjectItemRecHandle me);
- typedef pascal short (* ObjectTrackProc ) (Point *pt,long modifiers, ObjectItemRecHandle me);
- typedef pascal short (* ObjectUpdateProc) (WindowRef window, RgnHandle update,ObjectItemRecHandle me) ;
- typedef pascal void (* ObjectKeyProc ) (char keyCode, char theChar,long modifiers);
-
- /* Apple Event Stuff */
- typedef pascal OSErr (* OpenDocProc ) ( AppleEvent *ae, AppleEvent * AEreply,long handlerRefcon);
- typedef pascal OSErr (* OpenAppProc ) ( AppleEvent *ae, AppleEvent * AEreply, long handlerRefcon);
- typedef pascal OSErr (* QuitAppProc ) ( AppleEvent *ae, AppleEvent * AEreply, long handlerRefcon);
- typedef pascal OSErr (* PrintDocProc ) ( AppleEvent *ae, AppleEvent * AEreply, long handlerRefcon);
- typedef pascal short (* ScriptProc ) (short resId);
-
-
- struct MenuItemRec {
- short menuID ;
- short menuItem ;
- Handle menuObject ;
- MenuHitProc menuHit ;
- MenuUpdateProc menuUpdate ;
- };
-
-
- struct ButtonItemRec {
- ButtonItemRecHandle nextButton ;
- short buttonID ;
- ControlHandle buttonObject ;
- ButtonHitProc buttonHit ;
- ButtonUpdateProc buttonUpdate ;
- };
-
- typedef struct ScrollItemRec ScrollItemRec,*ScrollItemRecPtr, **ScrollItemRecHandle;
-
- struct ScrollItemRec {
- long scrollType;
- ScrollItemRecHandle nextScroll;
- short scrollID;
- ControlHandle scrollObject;
- MyActionProc scrollHit;
- MyActionProc scrollUpdate;
- MyActionProc scrollIndicator;
- MyActionProc scrollButton;
- };
-
- struct PrintAreaRec {
- Rect windowPrintRect ;
- short windowPrintHorz ;
- short windowPrintVert ;
- short windowPrintLineHeight ;
- short windowPrintMaxVert ;
- short windowPrintMargin ;
- };
- typedef struct PrintAreaRec PrintAreaRec ,* PrintAreaRecPtr,**PrintAreaRecHandle;
-
- typedef struct ListItemRec ListItemRec,*ListItemRecPtr,**ListItemRecHandle ;
-
- struct ListItemRec {
- ListItemRecHandle nextList ;
- ListRef listObject ;
- short listID ;
- ListHitProc listHit ;
- ListUpdateProc listUpdate ;
- ListIdleProc listIdle ;
- };
-
- typedef struct EditFieldItemRec EditFieldItemRec,*EditFieldItemRecPtr,**EditFieldItemRecHandle ;
-
- struct EditFieldItemRec {
- EditFieldItemRecHandle nextEdit ;
- short editFieldID ;
- long editFieldFlags ;
- TEHandle editFieldObject ;
- EditFieldHitProc editFieldHit ;
- EditFieldUpdateProc editFieldUpdate ;
- EditFieldIdleProc editFieldIdle ;
- };
-
-
- enum {
- EditType,
- ListType,
- ButtonType
- } ;
- typedef SInt8 contentItemType;
-
- struct ContentRec {
- short contentCount ;
- contentItemType kind ;
- union {
- EditFieldItemRec efr ;
- ListItemRec lir ;
- ButtonItemRec bir ;
- };
- };
-
- typedef struct ContentRec ContentRec,* ContentRecPtr;
-
- typedef ContentRec WindowItemsArray[];
- typedef ContentRec * WindowItemsArrayPtr;
-
- struct WindowItemRec {
- long windowMagic ; /* Signature so we know our windows */
- short windowID ;
- WindowRef windowObject ;
- WindowHitProc windowHit ;
- WindowUpdateProc windowUpdate ;
- WindowIdleProc windowIdle ;
- WindowGrowProc windowGrow ;
- WindowActivateProc windowActivate ;
- WindowCloseProc windowClose;
- WindowZoomProc windowZoom;
- PrintAreaRec windowPrintAreaRec ;
- FSSpec windowFSSpec ;
- short windowRefNum;
- ListItemRecHandle windowLists ;
- EditFieldItemRecHandle windowEdits ;
- ButtonItemRecHandle windowButtons ;
- ScrollItemRecHandle windowScroll;
- Boolean windowHasControls ;
- Boolean windowHasLists ;
- Boolean windowHasEditField ;
- short windowItemCount ;
- WindowItemsArrayPtr windowItems ;
- };
- typedef struct WindowItemRec WindowItemRec, *WindowItemRecPtr,**WindowItemRecHandle;
-
-
- struct ProcTableRec {
- EventProcs EventProcsArray[kMaxEventProcs];
- TerminateProc Terminate ;
- InitializeProc Initialize;
- LowMemProc LowMem ;
- MenuEventProc MenuEvent ;
- AboutProc About;
- OpenDocProc openDocAE ;
- OpenAppProc openAppAE;
- QuitAppProc quitAppAE;
- PrintDocProc printDocAE;
- };
-
-
- #if __POWERPC__
-
- #else
- #define gSACurrentWindow GSACURRENTWINDOW
- #define gSACurControl GSACURCONTROL
- #define gSAVPageSize GSAVPAGESIZE
- #define gSAHPageSize GSAHPAGESIZE
- #define gSAVLineSize GSAVLINESIZE
- #define gSAHLineSize GSAHLINESIZE
- #endif
-
-
- typedef struct ProcTableRec ProcTableRec, *ProcTablePtr;
- /*---------------------------------------------------------------------------------- */
- #pragma mark Globals
- /*---------------------------------------------------------------------------------- */
- extern ListRef gSAMyList ;
- extern short gSATerminateReason ; /* When Quiting this tells us why we are quiting */
- extern Boolean gSADebug ; /* Activate Debug Alerts. May make this an short */
- /* for levels of debug */
- extern ProcTableRec gSAProcs ;
- extern Boolean gOApped ;
- extern Boolean gSADone ;
- extern Boolean gSAHasAppleEvents ;
- extern Boolean gSAHasTE ;
- extern Boolean gSAHasList ;
- extern MenuRef gSAAppleMenu ;
- extern MenuRef gSAFileMenu ;
- extern MenuRef gSAEditMenu ;
- extern EventRecord gSAEvent ;
- extern Boolean gSAHasControls ;
- extern WindowRef gSACurrentWindow ;
- extern short gSADefaultFont ;
- extern short gsADefaultSize ;
- extern SysEnvRec gSAMac ;
- extern WindowItemRecHandle gSACurWRecHandle ;
- extern short gSAWindowID ;
- extern TEHandle gSACurTE ;
- extern ControlHandle gSACurControl;
- extern ListRef gSACurList ;
- extern short gSACurrentItem;
- extern WindowItemRecHandle gSACurrentWIRH;
- extern ButtonUpdateProc NilButtonUpdateProc ;
- extern MenuUpdateProc NilMenuUpdateProc ;
- extern EditFieldUpdateProc NilEditFieldUpdateProc ;
- extern EditFieldHitProc NilEditFieldHitProc ;
- extern short gSAVPageSize ;
- extern short gSAHPageSize ;
- extern short gSAVLineSize ;
- extern short gSAHLineSize ;
-
-
- /*---------------------------------------------------------------------------------- */
- #pragma mark Prototypes
- /*---------------------------------------------------------------------------------- */
-
- pascal short SAExecuteScript(short resID);
- pascal void SAMoveObject (ObjectItemRecHandle orh,short h,short v, Boolean reDraw);
- pascal void SADrawGroup(GroupRecHandle grh,RgnHandle update);
-
- pascal void InitSimpleApp (short masters , Boolean wantsStandardMenu);
- pascal void Run(void);
- pascal void CloseSimpleApp(void);
- pascal void SADoWindowClose(WindowRef * theWindow);
-
- pascal short DefaultMenuHit ( long modifiers);
- pascal short InstallMenuItem (short menuID,
- short MenuItem,
- ConstStr255Param menuTitle,
- UInt8 mark,
- UInt8 cmdChar,
- MenuHitProc menuHit,
- MenuUpdateProc menuUpdate);
-
- pascal short InstallPushButton (long *buttonID,
- WindowRef window,
- ConstStr255Param name,
- Rect *r,
- UInt8 cmdKey,
- ButtonHitProc bhp ,
- ButtonUpdateProc bup );
-
- pascal short InstallCustomObject (long * objectID,
- WindowRef window ,
- ConstStr255Param name ,
- Rect * r ,
- UInt8 cmdKey ,
- ObjectInitProc oip ,
- ObjectDisposeProc odp ,
- ObjectHitProc ohp ,
- ObjectTrackProc otp ,
- ObjectUpdateProc oup );
-
- pascal short InstallControl (long * buttonID,
- WindowRef window,
- ConstStr255Param name,
- Rect * r ,
- UInt8 cmdKey,
- short controlType,
- ButtonHitProc bhp ,
- ButtonUpdateProc bup );
-
- pascal short InstallCheckBox (long *buttonID,
- WindowRef window,
- ConstStr255Param name,
- Rect * r ,
- UInt8 cmdKey,
- short initialValue,
- ButtonHitProc bhp , /* set to nil for default checkbox action */
- ButtonUpdateProc bup );
-
- pascal short InstallScrollBar (long * buttonID,
- WindowRef window,
- ConstStr255Param name,
- Rect *r,
- UInt8 cmdKey,
- MyActionProc scrollHitProc ,
- MyActionProc scrollButtonProc ,
- MyActionProc scrollIndicatorProc);
-
- pascal short InstallRadioGroup (short theGroupID,
- WindowRef window,
- short count,
- ConstStr255Param title,
- StringArrayPtr names,
- Rect * r,
- short defaultItem,
- short hSpacing,
- short vSpacing,
- short buttonHeight,
- short buttonWidth,
- PreGroupHitProc PreGHP,
- PostGroupHitProc PostGHP,
- GroupUpdateProc gup );
-
- pascal short CreateDocumentWindow (ConstStr255Param name ,
- Rect * bounds ,
- Boolean visable );
- pascal void SAInitScripting(void);
-
- pascal short GetDocumentWindow ( short resID);
-
- pascal void Print (Str255 s ); /* Print no CR */
- pascal void PrintLine (Str255 s); /* Print with CR */
- pascal void PrintTextHandle (Handle text ); /* Print a buffer full of text with CR */
-
- pascal void SetRectLocation ( Rect *r,short h, short v); /* This Sets a rects anchor point */
- pascal void SetRectDimensions (Rect *r,short h, short v); /* This Sets its size without changing its position */
-
- pascal void GetPrintArea (WindowRef window ,Rect * bounds );
- pascal void SetPrintArea (WindowRef window, Rect * bounds );
-
- pascal EditFieldItemRecHandle SAGetEditField (WindowRef wind,short editID) ;
- pascal void SASetFocus (WindowRef theWindow, EditFieldItemRecHandle efrh);
-
- pascal short InstallEditField (long * editID ,
- WindowRef window,
- ConstStr255Param name ,
- Rect * r,
- EditFieldHitProc hitProc ,
- EditFieldUpdateProc updateProc ,
- ObjectKeyProc keyProc ,
- long flags );
-
- pascal short InstallList (long * listID ,
- WindowRef window,
- Rect * r,
- ListHitProc lhp ,
- ListUpdateProc lup ,
- ListDrawCellProc ldcp ,
- long flags );
-
- pascal short GetTEString (short editFieldID ,ConstStr255Param s ) ;
- pascal OSErr AddStringToList (ListRef listID ,ConstStr255Param s );
-
- pascal void BlastString (short h, short v ,Str255 s ); /* These will blast text at the location specified. It erases as it draws */
- pascal void BlastText (short h,short v ,Handle text );
- pascal void InstallIdleProc(EventProcs ip);
- pascal void SetMyTitle(Str255 title);
- pascal void SAEnableMe(void);
- pascal void SADisableMe(void);
- pascal void SAEnableObject(long thing);
- pascal void SADisableObject(long thing);
- pascal ButtonItemRecHandle SAGetGroupItem(WindowRef wind,short groupID,short item);
- pascal ControlHandle SAGetObjectHandle(long thing);
- pascal short SADrawObject(ObjectItemRecHandle orh,RgnHandle update);
-
-
-
- #endif
-